package LeetCode刷题;

/**
 * @program: Java_Study
 * @author: Xiaofan
 * @createTime: 2021-12-30 11:14
 * @description: Functions of this class is
 * 官方题解：
 * class Solution {
 *     public int[] plusOne(int[] digits) {
 *         int n = digits.length;
 *         for (int i = n - 1; i >= 0; --i) {
 *             if (digits[i] != 9) {
 *                 ++digits[i];
 *                 for (int j = i + 1; j < n; ++j) {
 *                     digits[j] = 0;
 *                 }
 *                 return digits;
 *             }
 *         }
 *
 *         // digits 中所有的元素均为 9
 *         int[] ans = new int[n + 1];
 *         ans[0] = 1;
 *         return ans;
 *     }
 * }
 **/
public class 加一 {
    public static void main(String args[]){

    }
    public int[] plusOne(int[] digits) {
        //这不就是一个进位的问题嘛
        int len=digits.length;
        if(digits[len-1]+1<10){//如果最后一位加了1后小于10，直接返回原数组
            digits[len-1]++;
            return digits;
        }
        int ans[]=new int[len+1];
        int i=len-1;
        digits[i]++;//最后一位进行加一
        int carry = (digits[i]>=10)?1:0;//定义初始进位
        digits[i]%=10;
        while(--i>=0){
            digits[i]+=carry;
            carry=(digits[i]>=10)?1:0;//判断当前位是否有进位
            digits[i]%=10;
            ans[len--]=digits[i];
        }
        if(carry!=0){
            ans[0]=1;
            return ans;
        }
        return digits;
    }
}